from AES import AES, AES_ECB, AES_kernel
from AK  import AK

# AES module demo
if __name__ == '__main__':
    #  明文

    # pt = 'thisisatestclass'
    pt = 'heshan200110720h'
    pt += 'heshan200110719h'

    # 密钥

    key = 'cryptographylab1'
    # key = 'securitysecurity'

    print("明文文本: ", pt)
    print("密钥文本: ", key)
    
    aes = AES()


    '''
----------加密过程示例---------------------------
    '''
    # 工作模式默认是ECB 填充为None 输入可以是二维数组也可以是字符串 返回值是二维数组
    ct = aes.encrypt(pt=pt, key=key, mode=AES_ECB)

    # 解密返回值是二维数组 可以将二维数组转成hex编码或者utf-8字符
    print("加密结果: ",aes.matrixToHex(ct))



    '''
----------解密过程示例---------------------------
    '''
    # 工作模式默认是ECB 填充为None 输入可以是二维数组也可以是字符串 返回值是二维数组
    pt = aes.decrypt(ct=ct, key=key, mode=AES_ECB)
    # 打印解密后的hex文本结果

    # 解密返回值是二维数组 可以将二维数组转成hex编码或者utf-8字符
    print("解密结果: ",aes.matrixToHex(pt))
    print("解密文本: ",aes.matrixToText(pt))
    print()


    '''
----------打印轮密钥---------------------------
    '''
    # 用于测试和展示
    print("轮密钥:")
    for round in range(11):
        AK(key=AES_kernel().format(key)).printRoundKey(round=round) 